home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / gus / vts139b.zip / DEVGUS.PAS < prev    next >
Pascal/Delphi Source File  |  1993-10-10  |  5KB  |  177 lines

  1. {****************************************************************************}
  2. {                                                                            }
  3. { MODULE:         DevGUS                                                     }
  4. {                                                                            }
  5. { DESCRIPTION:    Device driver for the Gravis Ultrasound.                   }
  6. {                                                                            }
  7. { AUTHOR:         Juan Carlos Arévalo                                        }
  8. {                                                                            }
  9. { MODIFICATIONS:  Nobody (yet ;-)                                            }
  10. {                                                                            }
  11. { HISTORY:        29-Aug-1993 Design and implementation.                     }
  12. {                                                                            }
  13. { (C) 1992,93 VangeliSTeam                                                   }
  14. {____________________________________________________________________________}
  15.  
  16. UNIT DevGUS;
  17.  
  18. INTERFACE
  19.  
  20.  
  21.  
  22.  
  23. { Device ID String. }
  24.  
  25. CONST                    
  26.   GUSDevID = 'GUS';
  27.  
  28.  
  29.  
  30.  
  31. IMPLEMENTATION
  32.  
  33. USES SoundDevices, StrConst, GUS, Kbd;
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40. PROCEDURE NullTimerHandler; FAR; ASSEMBLER;
  41.   ASM
  42.                 MOV     [DevSS],SS
  43.                 MOV     [DevSP],SP
  44.                 MOV     DX,DS
  45.                 MOV     SS,DX
  46.                 MOV     SP,OFFSET DevStack + DevStkSize
  47.  
  48.                 CALL    [PeriodicProc]
  49.  
  50.                 MOV     SS,[DevSS]
  51.                 MOV     SP,[DevSP]
  52.   END;
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. {----------------------------------------------------------------------------}
  60. { Name function.                                                             }
  61. {____________________________________________________________________________}
  62.  
  63. FUNCTION DevName : TDevName; FAR;
  64.   BEGIN
  65.     DevName := GetString(StrDevGUSName);
  66.   END;
  67.  
  68.  
  69.  
  70.  
  71. {----------------------------------------------------------------------------}
  72. { Autodetect routine. It's always present.                                   }
  73. {____________________________________________________________________________}
  74.  
  75. FUNCTION DevDetect : BOOLEAN; FAR;
  76.   BEGIN
  77.     IF DetectUltrasound THEN
  78.       BEGIN
  79.         StartUltrasound;
  80.         DevDetect := TRUE;
  81.         UsingGUS := TRUE;
  82.       END
  83.     ELSE
  84.       DevDetect := FALSE;
  85.   END;
  86.  
  87.  
  88.  
  89.  
  90. {----------------------------------------------------------------------------}
  91. { Device Initialisation routine.                                             }
  92. {____________________________________________________________________________}
  93.  
  94. PROCEDURE DevInit(Hz: WORD); FAR; 
  95.   BEGIN
  96.     InitGusIRQ;
  97.  
  98.     UsingGUS := TRUE;
  99. (*
  100.     CalcTimerData(TicksPerSecond);    { Then do the standard polling initialisation. }
  101.     InitTimer;
  102. *)
  103.  
  104.     GUSTimer2Rut := NullTimerhandler;
  105.     GUSInitTimer2($100 - ((2000000 DIV (TicksPerSecond*320) + 1) SHR 1));
  106.   END;
  107.  
  108.  
  109.  
  110.  
  111. {----------------------------------------------------------------------------}
  112. { Device deinitialisation routine.                                           }
  113. {____________________________________________________________________________}
  114.  
  115. PROCEDURE DevEnd; FAR; 
  116.   BEGIN
  117.     DoneGusIRQ;
  118.     StartUltrasound;
  119.   END;
  120.  
  121.  
  122.  
  123.  
  124. {----------------------------------------------------------------------------}
  125. { Accesory routines.                                                         }
  126. {____________________________________________________________________________}
  127.  
  128. FUNCTION DevGetRealFreq(Hz: WORD) : WORD; FAR;
  129.   BEGIN
  130.     DevGetRealFreq := Hz;
  131.   END;
  132.  
  133. PROCEDURE DevChgHz(Hz: WORD); FAR;
  134.   BEGIN
  135.   END;
  136.  
  137. PROCEDURE DevPoll; FAR;
  138.   BEGIN
  139.   END;
  140.  
  141.  
  142.  
  143.  
  144. {----------------------------------------------------------------------------}
  145. { Device record.                                                             }
  146. {____________________________________________________________________________}
  147.  
  148. CONST
  149.   DevData : TSoundDevice = (
  150.     DevID      : GUSDevID;
  151.     DMA        : FALSE
  152.   );
  153.  
  154.  
  155.  
  156.  
  157. {----------------------------------------------------------------------------}
  158. { Init code.                                                                 }
  159. {____________________________________________________________________________}
  160.  
  161. BEGIN
  162.  
  163.   WITH DevData DO BEGIN
  164.     Name            := DevName;
  165.     AutoDetect      := DevDetect;
  166.     InitRut         := DevInit;
  167.     ChgHzProc       := DevChgHz;
  168.     GetRealFreqProc := DevGetRealFreq;
  169.     TimerHandler    := SoundDevices.NullTimerHandler;
  170.     PollRut         := DevPoll;
  171.     EndRut          := DevEnd;
  172.   END;
  173.  
  174.   InitDevice(@DevData);
  175.  
  176. END.
  177.